/*
 * 阻塞一个线程，看其他线程是否也会阻塞，如果其他线程也阻塞，说明线程阻塞会导致整个进程阻塞。
 * 若其他线程未阻塞，则说明线程间状态独立。
 */

#include <stdio.h>
#include <pthread.h>

void *run_1(void *arg)  // 线程1 每隔1s 打印一条
{
    while(1)
    {
        sleep(1);
        printf(" I am thread 1, tid is %u , runing ...\n", pthread_self());
    }
}

void *run_2(void *arg)  // 线程2 每隔1s 打印一条
{
    while(1)
    {
        sleep(1);
        printf(" I am thread 2, tid is %u , runing ... \n", pthread_self());
    }
}

void *run_3(void *arg)  // 线程3  等待输入 ，输入完毕后打印
{
    int input = 0;
    scanf("%d", &input);
    printf("thread 3 iuput data id %d \n", input);
}

int main()   
{
    pthread_t tid1, tid2, tid3;

    pthread_create(&tid1, NULL, run_1, NULL);
    pthread_create(&tid2, NULL, run_2, NULL);
    pthread_create(&tid3, NULL, run_3, NULL);

    pthread_join(tid1, NULL);    // 主线程 等待其余3个线程
    pthread_join(tid2, NULL);
    pthread_join(tid3, NULL);
    return 0;
}

/*
 * 通过实验结果可以看到，在线程3阻塞前后，线程1 和 2 的运行状态没有任何变化。可以说明 一个线程的阻塞并不会导致所有线程都阻塞。
 * 
 */ 
